package com.haders.util;

import lombok.Data;
import lombok.Getter;

public class UserContext { // 使用 static final 保证全局唯一性 
    private static final ThreadLocal<User> CURRENT_USER = new ThreadLocal<>();
    // 禁止实例化 
    private UserContext() {}

    /**
     * 设置当前线程用户信息
     */
    public static void setCurrentUser(User user) {
        CURRENT_USER.set(user);
    }

    /**
     * 获取当前线程用户信息
     */
    public static User getCurrentUser() {
        return CURRENT_USER.get();
    }

    /**
     * 清除当前线程用户信息
     */
    public static void clear() {
        CURRENT_USER.remove();
    }

    /**
     * 用户信息实体（需确保线程安全）
     */
    @Data
    @Getter
    public static class User {
        private final String userId;
        private final String username;

        public User(String userId, String username) {
            this.userId = userId;
            this.username = username;
        }
// getters... 
    }
}
